package com.wch.clientdemo.module.base.adapters.base;

import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

/**
 *
 * @author WanChengHe
 * @param <T>
 * 基础适配器
 */
public class CustomBaseAdapter<T> extends BaseAdapter {

	private List<T> mItems;
	
	
	public List<T> getmItems() {
		return mItems;
	}

	public void setmItems(List<T> mItems) {
		this.mItems = mItems;
	}

	/**
	 * 获取数量
	 */
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mItems != null ?mItems.size() : 0;
	}

	/**
	 * 获取某一个数据
	 */
	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return mItems.get(position);
	}

	/**
	 * 获取位置
	 */
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	/**
	 * 增加数据
	 * @param data
	 */
	public void add(T data){
		if(null == mItems){
			mItems = new ArrayList<T>();
		}
		mItems.add(data);
		notifyDataSetChanged();
	}
	
	/**
	 * 对指定位置增添或者更改数据
	 * @param position
	 * @param data
	 */
	public void set(int position,T data){
		if(null == mItems){
			mItems = new ArrayList<T>();
		}
		mItems.set(position, data);
		notifyDataSetChanged();
	}
	
	/**
	 * 增加多个
	 * @param collection
	 */
	public void addAll(List<T> collection){
		if(null == mItems){
			mItems = new ArrayList<T>();
		}
		mItems.addAll(collection);
		notifyDataSetChanged();
	}
	
	/**
	 * 移除某个数据
	 * @param data
	 */
	public void remove(T data){
		if(null != mItems){
			mItems.remove(data);
		}
		notifyDataSetChanged();
	}
	
	/**
	 * 移除某个位置的数据
	 * @param position
	 */
	public void remove(int position){
		if(null != mItems){
			mItems.remove(position);
		}
		notifyDataSetChanged();
	}
	
	/**
	 * 清除数据
	 */
	public void clear(){
		if(null != mItems){
			mItems.clear();
		}
		notifyDataSetChanged();
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		return null;
	}

}
